GPS satellites broadcast signals enabling GPS receivers on the earth's surface to calculate position. GPS satellites transmit data along an L1 frequency and an L2 frequency. The L1 frequency is known as the course acquisition (C/A) code. The C/A code is available for civilian use and is a 1.023 MHz pseudorandom noise (PRN) code, which repeats its 1023 bits each millisecond. Each satellite transmits a unique PRN code so that GPS receivers can identify each satellite based on the PRN code received from a given satellite. 1,023 PRN codes exist, but presently only 32 PRN codes are used—one for each of the 32 GPS satellites in orbit.
FIG. 1a illustrates a typical process for determining position on the earth 14 via GPS. The satellites 10 orbit the earth 14 and constantly transmit PRN codes. Object 12 is located on or near the earth's surface and may include a vehicle, such as an airplane, automobile, motorcycle, ship, or train or a mobile device, such as a cell phone, smartphone, camera, computer, personal navigation device, or video game player. The object 12 is equipped with a GPS receiver that can receive and demodulate incoming GPS signals. In the example shown in FIG. 1a, at least four satellites 10 are used to determine the location of the object 12. The GPS receiver on object 12 utilizes the unique PRN code transmitted by each GPS satellite to determine parameters including (i) which signal the GPS receiver is receiving and (ii) at what time delay the GPS receiver is receiving each signal. With these parameters, the location of the object 12 may be determined.
In order to determine the delay for a received PRN code, a GPS receiver must correlate the received GPS PRN code with its own locally generated copy (or replica) of the PRN code. The correlation process attempts to align the received GPS PRN code with a locally generated replica PRN code, so that the GPS receiver can determine the time delay of the satellite's signal, which is used to calculate position. However, because the receiver does not know the code phase or Doppler information of the satellite signal, the correlation process typically requires thousands of correlations to be performed in order to determine a match.
FIG. 1b demonstrates a typical delay between a received GPS PRN code 20 and a replica PRN code 22. The offset 24 represents the delay that a GPS receiver calculates in order to correlate the replica PRN code 22 with the received GPS PRN code 20. To determine the correct code phase, a receiver typically tries all possible code phases of its replica PRN code 22 to determine a match. This process is typically performed by shifting the replica PRN code 22 through each possible 1,023 bits of code and correlating the replica PRN code 22 with the received GPS PRN code 20 at each shift. The GPS receiver then determines if there is a match after performing each of the correlations.
To determine the correct code phase, a receiver must try all possible code phases of its replica PRN code to find the offset and determine a match. Further complicating the correlation process is the possible Doppler shift. Rather than the phase of the code being off by an exact integral number of milliseconds, the Doppler shift may cause the PRN code to differ by fractions of a pulse width.
Typical approaches to the correlation process may involve the use of Doppler bins. A Doppler bin represents a fixed offset for each possible code phase adjusted for the Doppler shift. For each Doppler shift, there will be at least 1,023 corresponding phase shifts that must be accounted for during the correlation process. This process requires extensive amounts of memory to store the epochs of PRN code at all of the Doppler shifts.
FIG. 2 illustrates an example of a typical correlation process for a GPS receiver utilizing Doppler bins. The process includes GPS PRN code 202 and locally generated Doppler PRN codes 204 and 206. The GPS PRN code 202 is received from a satellite at a GPS receiver. Because there is some delay associated with the orbit of the satellite and the movement of the GPS receiver, an offset 208 may be present. Depending on the number of Doppler bins used, there may be over 500 different offsets to match with the frequency of the incoming GPS PRN code. Accordingly, Doppler PRN codes 204 and 206 represent only two examples of different offsets. For Doppler PRN code 204 an offset 208a is present. This offset 208a represents the difference in frequency between the GPS PRN code 202 and the locally generated Doppler PRN code 204. In order to properly correlate the GPS PRN code 202 with locally generated PRN code, the offset 208 should be near zero. Doppler PRN code 206 represents a smaller offset 208b, however, it is still not a close enough match to utilize for correlations. A GPS correlation process typically processes epochs of locally generated PRN codes at each possible Doppler offset to find a match.
The correlation process utilizing Doppler bins requires extensive amounts of memory because the correlation process requires storing each possible epoch of code for each Doppler bin used in the correlation process.